উদাহরণ সহ Query Methods এর ব্যবহার

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এ Query Methods |
109
109

স্প্রিং জেডিবিসি (Spring JDBC) তে JdbcTemplate এবং NamedParameterJdbcTemplate ব্যবহার করে ডাটাবেসে বিভিন্ন ধরনের কোয়ারি চালানো যায়। নিচে উদাহরণসহ বিভিন্ন কোয়ারি মেথডগুলোর ব্যবহার দেখানো হলো:


১. queryForObject()

এই মেথডটি একটি সিঙ্গেল রেকর্ড (একটি রো) রিটার্ন করে। এটি সাধারণত যেখানে সুনির্দিষ্ট একটি রেকর্ড রিটার্ন করার প্রয়োজন হয় সেখানে ব্যবহার করা হয়।

উদাহরণ:

String sql = "SELECT name FROM students WHERE id = ?";
String name = jdbcTemplate.queryForObject(sql, new Object[]{1}, String.class);
System.out.println("Student Name: " + name);

২. query()

এই মেথডটি এক বা একাধিক রেকর্ড (মাল্টিপল রো) রিটার্ন করার জন্য ব্যবহার করা হয়। এটি RowMapper ব্যবহার করে ডাটাকে মডেল অবজেক্টে ম্যাপ করে।

উদাহরণ:

String sql = "SELECT id, name, age FROM students";
List<Student> students = jdbcTemplate.query(sql, (rs, rowNum) -> {
    Student student = new Student();
    student.setId(rs.getInt("id"));
    student.setName(rs.getString("name"));
    student.setAge(rs.getInt("age"));
    return student;
});

students.forEach(student -> 
    System.out.println("ID: " + student.getId() + ", Name: " + student.getName() + ", Age: " + student.getAge()));

৩. queryForList()

ডাটাবেস থেকে একটি লিস্ট অবজেক্ট রিটার্ন করে। এটি সাধারণত সরাসরি লিস্ট হিসেবে রেজাল্ট পেতে ব্যবহৃত হয়।

উদাহরণ:

String sql = "SELECT name FROM students";
List<String> names = jdbcTemplate.queryForList(sql, String.class);

names.forEach(System.out::println);

৪. queryForMap()

এই মেথডটি একটি সিঙ্গেল রেকর্ড (একটি রো) কে একটি Map হিসাবে রিটার্ন করে, যেখানে কলামের নামগুলো কী এবং তাদের মানগুলো ভ্যালু হিসেবে থাকে।

উদাহরণ:

String sql = "SELECT id, name, age FROM students WHERE id = ?";
Map<String, Object> student = jdbcTemplate.queryForMap(sql, 1);

System.out.println("ID: " + student.get("id"));
System.out.println("Name: " + student.get("name"));
System.out.println("Age: " + student.get("age"));

৫. update()

ডাটাবেসে ডাটা INSERT, UPDATE বা DELETE করার জন্য ব্যবহার করা হয়।

উদাহরণ:

Insert Operation:

String sql = "INSERT INTO students (name, age) VALUES (?, ?)";
int result = jdbcTemplate.update(sql, "John Doe", 22);

if (result > 0) {
    System.out.println("A new student has been inserted.");
}

Update Operation:

String sql = "UPDATE students SET age = ? WHERE id = ?";
int result = jdbcTemplate.update(sql, 25, 1);

if (result > 0) {
    System.out.println("Student's age has been updated.");
}

Delete Operation:

String sql = "DELETE FROM students WHERE id = ?";
int result = jdbcTemplate.update(sql, 1);

if (result > 0) {
    System.out.println("A student has been deleted.");
}

৬. Batch Update

একাধিক রেকর্ড একসঙ্গে আপডেট করার জন্য ব্যবহার করা হয়। এটি পারফরম্যান্স উন্নত করতে সহায়ক।

উদাহরণ:

String sql = "INSERT INTO students (name, age) VALUES (?, ?)";

List<Object[]> batchArgs = Arrays.asList(
    new Object[]{"Alice", 20},
    new Object[]{"Bob", 22},
    new Object[]{"Charlie", 23}
);

int[] results = jdbcTemplate.batchUpdate(sql, batchArgs);

System.out.println("Batch Update Completed: " + Arrays.toString(results));

৭. NamedParameterJdbcTemplate ব্যবহার

নামযুক্ত প্যারামিটার দিয়ে কোয়ারি চালানোর জন্য এটি ব্যবহার করা হয়।

উদাহরণ:

@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

// Insert Operation
String sql = "INSERT INTO students (name, age) VALUES (:name, :age)";
Map<String, Object> params = new HashMap<>();
params.put("name", "David");
params.put("age", 24);

int result = namedParameterJdbcTemplate.update(sql, params);
if (result > 0) {
    System.out.println("A new student has been inserted using NamedParameterJdbcTemplate.");
}

// Select Operation
String selectSql = "SELECT id, name, age FROM students WHERE age > :age";
Map<String, Object> selectParams = new HashMap<>();
selectParams.put("age", 20);

List<Student> students = namedParameterJdbcTemplate.query(selectSql, selectParams, (rs, rowNum) -> {
    Student student = new Student();
    student.setId(rs.getInt("id"));
    student.setName(rs.getString("name"));
    student.setAge(rs.getInt("age"));
    return student;
});

students.forEach(student -> 
    System.out.println("ID: " + student.getId() + ", Name: " + student.getName() + ", Age: " + student.getAge()));

সংক্ষেপে:

মেথডব্যবহাররিটার্ন টাইপ
queryForObjectএকটি সিঙ্গেল রেকর্ড ফিল্ড রিটার্ন করতেএকটি সিঙ্গেল ভ্যালু বা অবজেক্ট
queryমাল্টিপল রেকর্ড ফিল্ড রিটার্ন করতেএকটি লিস্ট (RowMapper সহ)
queryForListমাল্টিপল রেকর্ড সরাসরি লিস্ট রিটার্ন করতেলিস্ট
queryForMapএকটি রেকর্ডকে ম্যাপ রিটার্ন করতেMap (Key: Column Name, Value: Value)
updateডাটাবেসে ডাটা আপডেট/ইনসার্ট/ডিলিট করতেint (affected rows count)
batchUpdateএকাধিক রেকর্ড আপডেট করতেint[] (প্রতিটি অপারেশনের ফলাফল)

Spring JDBC এর এই মেথডগুলো ডেভেলপারদের ডাটাবেস অপারেশন দ্রুত এবং সহজে করতে সহায়তা করে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion